package br.org.acessobrasil.portal.action;

import java.util.List;

import org.apache.log4j.Logger;

import br.org.acessobrasil.portal.modelo.Setor;
import br.org.acessobrasil.portal.modelo.Usuario;
import br.org.acessobrasil.portal.persistencia.SetorDao;

public class SetorAction extends Super{

	private static final long serialVersionUID = 1293801945334863313L;
	private static Logger logger = Logger.getLogger(SetorAction.class);
	private Setor setor;
	private static SetorDao setorDao = new SetorDao();
	private List<Setor> listSetor;
	
	public SetorAction(SetorDao setorDAO){
		setorDao = setorDAO;
	}
	
	public String adicionarSetor(){
		Usuario usuario = getUsuarioLogado();
		try {
			setor.setSitio(getSitioAtual());
			setorDao.create(setor);
			usuario.addActionMessage("Setor criado com sucesso.");
		} catch (Exception e) {
			usuario.addActionError("Erro ao criar o setor. " + e.getMessage());
			logger.error("Erro ao adicionar setor ",e);	
		}
		return SUCCESS;
	}
	
	public String listar() {
		setListSetor(setorDao.list(getSitioAtual()));
		return SUCCESS;
	}
	
	public String carregarSetor() {
		if (setor != null && setor.getNuSetor() != 0) {
			try {
				setor = setorDao.select(setor.getNuSetor());
				//printSetor(setor);
				return SUCCESS;
			} catch (Exception e) {
				logger.error("Erro ao carregar setor "+setor,e);	
				return ERROR;
			}
		}
		return ERROR;
	}
	
	public String deletarSetor(){
		Usuario usuario = getUsuarioLogado();
		try {
			if(btnCancelar!=null){
				//cancelou
			}else{
				setor = setorDao.select(setor.getNuSetor());
				if(setor.getListUsuario().size()>0 && setor.getListArquivos().size()>0){
					usuario.addActionError("Este setor n&atilde;o pode ser apagado pois existem usu&aacute;rios nele.");
					usuario.addActionError("Este setor n&atilde;o pode ser apagado pois existem arquivos nele.");
					return INPUT;		
				} 
				if(setor.getListUsuario().size()>0){
					usuario.addActionError("Este setor n&atilde;o pode ser apagado pois existem usu&aacute;rios nele.");
					return INPUT;		
				} else if (setor.getListArquivos().size()>0) {
					usuario.addActionError("Este setor n&atilde;o pode ser apagado pois existem arquivos nele.");
					return INPUT;	
				} else {		
					setorDao.delete(setor);
				}	
			}
		} catch (Exception e) {
			usuario.addActionError("Erro ao apagar o setor");
			logger.error("Erro ao apagar setor "+setor,e);
			return INPUT;
		}
		return SUCCESS;
	}
				
	public Setor getSetor() {
		return setor;
	}
	public void setSetor(Setor setor) {
		this.setor = setor;
	}
	public List<Setor> getListSetor() {
		if(listSetor==null) {
			listSetor=setorDao.list(getSitioAtual());
		}
		return listSetor;
	}
	public void setListSetor(List<Setor> listSetor) {
		this.listSetor = listSetor;
	}
	
	/**
	 * Atualiza as informacoes de um setor
	 * @return SUCCESS
	 */
	public String atualizarSetor() {
		Usuario usuario = getUsuarioLogado();
		try {
			Setor setorBanco = setorDao.select(setor.getNuSetor());
			setorBanco.setDeSetor(setor.getDeSetor());
			setorBanco.setNoSetor(setor.getNoSetor());
			setorDao.update(setorBanco);
			usuario.addActionMessage("Setor atualizado com sucesso.");
			return SUCCESS;
		} catch (Exception e) {
			usuario.addActionError("Erro: " + e.getMessage());
			logger.error("Erro ao atualizar setor "+setor,e);
		}
		return INPUT;
	}
	
	/**
	 * Define os valores predefinidos
	 * @return SUCCESS
	 */
	public String setMensagemSetor() {
		if (setor==null){
			setor= new Setor(); 
			setor.setNoSetor(getText("predefinido.nome"));
			setor.setDeSetor(getText("predefinido.descricao"));
		}
		return SUCCESS;
	}
	
	
	
}
